package com.example.feign;

import com.example.bean.User;
import com.example.feign.fallback.factory.UserServiceFallBackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @Author 刘武贵
 * @Date 2024-03-02 23:34
 * @Description 功能描述：调用用户微服务的接口（feign调用）
 */
//@FeignClient(value = "server-user")
//@FeignClient(value = "server-user", fallback = UserServiceFallBack.class)
/**
 * fallbackFactory = UserServiceFallBackFactory.class 指定容错类
 * 使用Sentinel实现服务容错时，fallback和fallbackFactory只能使用其中一种方式实现服务容错，二者不能同时使用。
 */
@FeignClient(value = "server-user", fallbackFactory = UserServiceFallBackFactory.class)
public interface UserService {

    /**
     * 根据用户ID获取用户信息
     * @param uid 用户的唯一标识符
     * @return 返回User对象，包含用户详细信息
     */
    @GetMapping(value = "/user/get/{uid}")
    User getUser(@PathVariable("uid") Long uid);
}
